#include "videosoitin.h"

videoasetukset::videoasetukset(QWidget *parent, poiskokoruudusta *video) : QDialog(parent)
{
    paaleiska = new QFormLayout(this);

    kirkkaussaato = new QSlider(this);
    kirkkaussaato->setOrientation(Qt::Horizontal);
    kirkkaussaato->setRange(-100,100);

    huesaato = new QSlider(this);
    huesaato->setOrientation(Qt::Horizontal);
    huesaato->setRange(-100,100);

    saturationsaato = new QSlider(this);
    saturationsaato->setOrientation(Qt::Horizontal);
    saturationsaato->setRange(-100,100);

    contrastsaato = new QSlider(this);
    contrastsaato->setOrientation(Qt::Horizontal);
    contrastsaato->setRange(-100,100);
    
    kirkkauslabel = new QLabel("Kirkkaus", this);
    huelabel = new QLabel("Hue", this);
    saturationlabel = new QLabel("Saturation", this);
    contrastlabel = new QLabel("Contrast", this);

    paaleiska->addRow(kirkkauslabel, kirkkaussaato);
    paaleiska->addRow(huelabel, huesaato);
    paaleiska->addRow(saturationlabel, saturationsaato);
    paaleiska->addRow(contrastlabel, contrastsaato);

    connect(kirkkaussaato, SIGNAL(valueChanged(int)), video, SLOT(asetaKirkkaus(int)));
    connect(huesaato, SIGNAL(valueChanged(int)), video, SLOT(asetaHue(int)));
    connect(saturationsaato, SIGNAL(valueChanged(int)), video, SLOT(asetaSaturation(int)));
    connect(contrastsaato, SIGNAL(valueChanged(int)), video, SLOT(asetaContrast(int)));

    this->setLayout(paaleiska);
}

soittolista::soittolista(QWidget *parent, videosoitin *videosoitin) : QDialog(parent)
{
    this->setMinimumHeight(200);

    paaleiska = new QVBoxLayout();
    nappileiska = new QHBoxLayout();

    listaleiska = new QGridLayout();
    listaleiska->setAlignment(Qt::AlignTop|Qt::AlignLeft);

    lisaa = new QPushButton(QString::fromUtf8("Lisää"), this);
    poista = new QPushButton("Poista", this);
    sulje = new QPushButton("Sulje", this);

    connect(sulje, SIGNAL(clicked()), this, SLOT(close()));

    nappileiska->addWidget(lisaa);
    nappileiska->addWidget(poista);
    nappileiska->addWidget(sulje);

    connect(lisaa, SIGNAL(clicked()), videosoitin, SLOT(Lisaa()));
    video = videosoitin;
    nappileiska->setAlignment(Qt::AlignLeft|Qt::AlignBottom);

    paaleiska->addLayout(listaleiska);
    paaleiska->addLayout(nappileiska);

    this->setLayout(paaleiska);
}

void soittolista::LisaaListaan()
{
    listaleiska->addWidget(new QLabel(video->lista.last().toString()));

    /*foreach(QUrl tamaurl, video->lista)
    {
        listaleiska->addWidget(new QLabel(tamaurl.toString()));
    }*/
}

videosoitin::videosoitin(QWidget *parent) : QWidget(parent)
{
  url = 0;

  videoleiska = new QVBoxLayout();
  nappileiska = new QHBoxLayout();
  alaleiska = new QVBoxLayout();
  sliderleiska = new QHBoxLayout();
  saatoleiska = new QHBoxLayout();

  video = new poiskokoruudusta();

  audio = new Phonon::AudioOutput(Phonon::VideoCategory, this);
  media = new Phonon::MediaObject(this);

  Phonon::createPath(media, audio);
  Phonon::createPath(media, video);

  volyymi = new Phonon::VolumeSlider(this);
  volyymi->setAudioOutput(audio);
  volyymi->setMaximumWidth(150);

  videoslideri = new Phonon::SeekSlider(this);
  videoslideri->setMediaObject(media);
  videoslideri->setMaximumWidth(300);

  alaleiska->addWidget(videoslideri);

  //video->setScaleMode(Phonon::VideoWidget::FitInView);

  soita = new QPushButton("Soita", this);
  soita->setMinimumWidth(80);
  selaa = new QPushButton("Selaa", this);
  asetukset = new QPushButton("Asetukset", this);
  soittolistanappi = new QPushButton("Soittolista", this);

  connect(soita, SIGNAL(clicked()), this, SLOT(Soita()));
  connect(selaa, SIGNAL(clicked()), this, SLOT(Selaa()));
  connect(asetukset, SIGNAL(clicked()), this, SLOT(AvaaAsetukset()));
  connect(soittolistanappi, SIGNAL(clicked()), this, SLOT(AvaaSoittolista()));

  nappileiska->addWidget(soita);
  nappileiska->addWidget(selaa);
  nappileiska->addWidget(soittolistanappi);
  nappileiska->addWidget(asetukset);
  nappileiska->setAlignment(Qt::AlignLeft|Qt::AlignBottom);

  sliderleiska->addWidget(volyymi);
  sliderleiska->setAlignment(Qt::AlignLeft|Qt::AlignBottom);

  saatoleiska->addLayout(nappileiska);
  saatoleiska->addLayout(sliderleiska);

  alaleiska->addLayout(saatoleiska);
  alaleiska->setAlignment(Qt::AlignLeft|Qt::AlignBottom);

  videoleiska->addWidget(video);
  videoleiska->addLayout(alaleiska);

  this->setLayout(videoleiska);
}

void videosoitin::Soita()
{
    if(media->state() == Phonon::PausedState || media->state() == Phonon::StoppedState)
    {
        media->play();
        soita->setText(QString::fromUtf8("Pysäytä"));
    }

    else if((media->state() == Phonon::PlayingState))
    {
        media->pause();
        soita->setText("Soita");
    }

    else if(media->state() == Phonon::PausedState || media->state() == Phonon::StoppedState)
    {
        Selaa();
    }
}

void videosoitin::AvaaAsetukset()
{
    videoasetukset *uusidialogi = new videoasetukset(this, video);
    uusidialogi->show();
    uusidialogi->raise();
    uusidialogi->activateWindow();
}

void videosoitin::AvaaSoittolista()
{
    listadialogi = new soittolista(0,this);
    listadialogi->show();
    listadialogi->raise();
    listadialogi->activateWindow();
}

void videosoitin::Lisaa()
{
    lisattava = QUrl(QFileDialog::getOpenFileName(this, QString::fromUtf8("Lisättävä tiedosto")));
    lista << lisattava;
    media->enqueue(lista);
    listadialogi->LisaaListaan();
}

void videosoitin::mouseDoubleClickEvent(QMouseEvent *hiiri)
{
    Q_UNUSED(hiiri);
    video->setFullScreen(!video->isFullScreen());
}

void poiskokoruudusta::mouseDoubleClickEvent(QMouseEvent *hiiri)
{
    Q_UNUSED(hiiri);
    setFullScreen(!isFullScreen());
}

void poiskokoruudusta::asetaKirkkaus(int uusiArvo)
{
    this->setBrightness(qreal(uusiArvo)/100.0);
    qDebug() << this->brightness() << "kirkkaus";
}

void poiskokoruudusta::asetaHue(int uusiArvo)
{
    this->setHue(qreal(uusiArvo)/100.0);
}

void poiskokoruudusta::asetaSaturation(int uusiArvo)
{
    this->setSaturation(qreal(uusiArvo)/100.0);
}

void poiskokoruudusta::asetaContrast(int uusiArvo)
{
    this->setContrast(qreal(uusiArvo)/100.0);
}

void videosoitin::Selaa()
{
    url = QUrl(QFileDialog::getOpenFileName(this, "Avattava tiedosto"));

    if(url.isValid())
    {
        media->setCurrentSource(Phonon::MediaSource(url));
        media->play();
        soita->setText(QString::fromUtf8("Pysäytä"));
    }
}

videoasetukset::~videoasetukset()
{

}

soittolista::~soittolista()
{

}

videosoitin::~videosoitin()
{

}
